A.2. Mapping

Most iCalendar attribute values are either a string or a date and time and thus there is no real issues regarding mapping for such values. For access levels and priorities however the values are based on enumerated lists. The iCalendar specification does describe appropriate values for these attributes but often desktop calendar client solutions support a much richer set of values and often mobile devices will support a lesser set (if at all).

The case where the mobile device simply doesn’t support such concepts is fairly easy to support. Simply don’t display them and make sure changes on the device do not affect them server-side (as described in the section above about truncation).

It becomes much more complicated when the mobile device does support these attributes but supports a different set of accepted values. In such cases an appropriate mapping needs to occur. This is acceptable as long as an adequately accurate representation of the event is still available to the calendar user and if such mappings do not end up adversely effecting the original server-side representation.

EXAMPLE 1

A user creates a meeting with normal access (which is different then public for the system they use). The calendar application on the device the user uses can only display public or private so the event is displayed as public. If the user modifies the start time from the device and then synchronizes the access level should not now be changed to Public on the server-side representation of the event. It is important that it remains normal.

EXAMPLE 2

A user creates a public meeting by mistake. Later the user uses the calendar application on the device to switch it to private. The access level should change on the server as the user explicitly modified it.

EXAMPLE 3

A user creates a meeting of highest priority (which is different than high for the system they use). The calendar application on the device the user uses can only display low, medium, or high so the event is displayed as high. If the user modifies the start time from the device and then synchronizes the priority level should not now be changed to high on the server-side representation of the event. It is important that it remains highest. This issue affects events and tasks.

EXAMPLE 4

A user creates a task in their mobile device calendar with a priority of ‘Normal’ (iCalendar created by device uses a PRIORITY value of 2). The user sends this task via Bluetooth to their desktop and imports the task to their desktop Calendar application. The desktop calendar application displays the task as ‘Medium’.